<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use App\Tools\SmsService;  // 引入你定义的 SmsService
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;

class SmsController extends Controller
{
    /**
     * Method to fetch phone numbers from the database and send SMS to multiple users
     */
    public function fetchPhoneNumbersAndSendSms(Request $request)
    {
        // 获取数据库中符合条件的手机号
        $phoneNumbers = DB::table('api_qq1')
            ->where('id', '>=', 140000)
            ->whereNotNull('mobile')
            ->where('tuisong', 0)  // 只获取 tuisong 字段为 0 的记录
            ->limit(100)
            ->pluck('mobile', 'id')
            ->filter(function ($value) {
                return !empty(trim($value));  // 过滤掉空值或无效数据
            })
            ->take(3)  // 获取前10个有效号码
            ->toArray();

        $ids = array_keys($phoneNumbers);

        // 检查是否有符合条件的数据
        if (!empty($ids)) {
            // 更新记录的 'tuisong' 字段为 1，表示已经推送
            DB::table('api_qq1')
                ->whereIn('id', $ids)
                ->update(['tuisong' => 1]);
        }

        // 在数组中插入一个指定的手机号 13329966818
        array_unshift($phoneNumbers, '13329966818');  // 将手机号插入数组开头

        // 逐个发送短信
        $results = [];
        foreach ($phoneNumbers as $mobile) {
            // 调用 SmsService 的 sendSms 方法来发送短信
            $response = SmsService::sendSms($mobile, null, 'SMS_473810242');  // 修改模板和手机号
            if ($response[0]) {
                $results[] = [
                    'mobile' => $mobile,
                    'success' => true,
                    'message' => $response[1]  // 成功信息
                ];
            } else {
                $results[] = [
                    'mobile' => $mobile,
                    'success' => false,
                    'error' => $response[1]  // 错误信息
                ];
            }
        }

        // 返回所有发送结果的数组
        return response()->json($results);
    }
}
   